#include "stm32f10x.h"
#include "usart.h"
#include "stdio.h"


void USART_init(uint32_t bound)
{
    GPIO_InitTypeDef GPIO_InitStrue;
    USART_InitTypeDef USART_InitStrue;
	


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);

		GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;
    GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
    GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&GPIO_InitStrue);
	
		GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;
	  GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;
    GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&GPIO_InitStrue);

		USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
	  USART_InitStrue.USART_Parity=USART_Parity_No;
    USART_InitStrue.USART_BaudRate=bound;
	  USART_InitStrue.USART_StopBits=USART_StopBits_1;
		USART_InitStrue.USART_WordLength=USART_WordLength_8b;
    USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
    USART_Init(USART1,&USART_InitStrue);

    USART_Cmd(USART1,ENABLE);

}


//int fputc(int ch,FILE *f)
//{
//	USART_SendData(USART1,(uint8_t)ch);
//	while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
//	return ch;

//}

int fputc(int ch , FILE *f)
{
/*---------------???????printf??????,???USART1????------------------*/
	//1??ch??USART1
	USART_SendData(USART1 , ch) ;
 
	//2???????
	while( USART_GetFlagStatus(USART1 , USART_FLAG_TC) == RESET ) { ; }
	
	//3???ch
	return(ch) ;
}






